#include <iostream>
using namespace std;

unsigned int iteracionesDe(unsigned int n){
    if(n == 1) return 1;
	
	unsigned int n_siguiente;
	// n%1 realiza un and a nivel bits de n con 1
	if((n&1)==0) { // si n es par
		n_siguiente = n/2;
	} else { // si n es impar
		n_siguiente = 3 * n + 1;
	} 
	return 1 + iteracionesDe(n_siguiente);
}

unsigned int maxIteracionEntre(unsigned int desde, unsigned int hasta){
    unsigned int maximo = 0, actual = 0;

    for(unsigned int n = desde; n < hasta; n++){
        actual = iteracionesDe(n);
        if(actual > maximo) maximo = actual;
    }
    return maximo;
}

int main() {
    unsigned int desde, hasta;
    unsigned int max, min;

    while (cin >> desde >> hasta){
		if(desde > hasta){
			max = desde;
			min = hasta;
		} else {
			min = desde;
			max = hasta;
		}
		cout << desde << ' ' << hasta << ' ' << maxIteracionEntre(min, (max+1)) << endl;
    }
    return 0;
}
